# Python 函数
# 函数：是指组织好的，可重复使用的，用来实现特定功能的代码段

str1 = "itheima"
str2 = "itcast"
str3 = "python"

# 定义函数
def my_len(data):
    count = 0
    for i in data:
        count += 1
    print(f"字符串{data}的长度为{count}")
my_len(str1)
my_len(str2)
my_len(str3)


# 函数必须先定义再使用
# 函数定义：
# def 函数名 (传入参数):
#     函数体
#     return 返回值

# 函数调用
# 函数名 (参数)
def say_hi():
    print("Hello World")
say_hi()


# 函数传入参数
def add (x,y):
    """
    函数说明：两数求和
    :param x: 加数1
    :param y: 加数2
    :return: 和
    """
    sum = x + y
    # print(f"{x} + {y} = {Sum}")
    return sum
result = add(10,5)
print(result)


# 函数返回值为NULL——效果等同于不写return语句
result = say_hi()
print(f"无返回值函数，返回的内容是：{result}")
print(f"无返回值函数，返回的内容是：{type(result)}")
# None 用于if判断
def check_age(age):
    if age > 18:
        return "success"
    else:
        return None
result = check_age(16)
if not result:
    print("result 为 False")
else:
    print("result 为 True")


# 函数的嵌套
def fun_a():
    print("---1---")
def fun_b():
    print("---2---")
    # 嵌套调用fun_a
    fun_a()
fun_b()


# 变量的作用域——局部变量和全局变量
# 局部变量
num1 = 10  # 全局变量
def testA():
    num = 100
    print(num)
    print(num1)
testA()     # 这里正常调用num
# print(num)      # 这里会报错，变量的作用域超出范围
print(num1) # 全局变量在函数外也可以正常使用

# 在函数内修改全局变量
num = 200
def test_a():
    print(f"test_a:{num}")
def test_b():
    global num      # global 关键字可以在函数内修改全局变量
    num = 500
    print(f"test_b:{num}")
test_a()
test_b()
print(num)







